local redisStatusValue = redis.call('get', KEYS[1])
if (redisStatusValue == nil or redisStatusValue == false)
then
    return 0
else
    local decrNum = tonumber(ARGV[1])
    if (decrNum ~= 0)
    then
        local redisStatusValueTable = cjson.decode(redisStatusValue)
        local redisFragmentationNum = tonumber(redisStatusValueTable.fragmentationNum) - decrNum
        redisStatusValueTable.fragmentationNum = redisFragmentationNum
        if (redisFragmentationNum == 0) then
            redisStatusValueTable.finish = 'true'
            local actualTotalNum = redisStatusValueTable.successNum + redisStatusValueTable.errorNum + redisStatusValueTable.updateNum + redisStatusValueTable.noSignNum
            redisStatusValueTable.totalNum = actualTotalNum
        end
        local redisStatusValueTableStr = cjson.encode(redisStatusValueTable)
        redis.call('setex', KEYS[1], 28800, redisStatusValueTableStr)
    end
    return 1
end